home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 037 < prev    next >
Internet Message Format  |  1997-05-06  |  66KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-037
  3. Date: Sat, 18 Jun 1994 11:33:52 +0200 (MET DST)
  4.  
  5. C.S.M.P. Digest             Sat, 18 Jun 94       Volume 3 : Issue 37
  6.  
  7. Today's Topics:
  8.  
  9.         Finding a drive's SCSI ID
  10.         How to tell which volume was booted from?
  11.         Open Transport & ASLM (Was: Re: ASLM)
  12.         Symantec at WWDC (Was: Symantec vs. Metrowerks? What to do?)
  13.         [Q] Finding out if volume is locked
  14.  
  15.  
  16.  
  17. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  18. (pottier@clipper.ens.fr).
  19.  
  20. The digest is a collection of article threads from the internet newsgroup
  21. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  22. regularly and want an archive of the discussions.  If you don't know what a
  23. newsgroup is, you probably don't have access to it.  Ask your systems
  24. administrator(s) for details.  If you don't have access to news, you may
  25. still be able to post messages to the group by using a mail server like
  26. anon.penet.fi (mail help@anon.penet.fi for more information).
  27.  
  28. Each issue of the digest contains one or more sets of articles (called
  29. threads), with each set corresponding to a 'discussion' of a particular
  30. subject.  The articles are not edited; all articles included in this digest
  31. are in their original posted form (as received by our news server at
  32. nef.ens.fr).  Article threads are not added to the digest until the last
  33. article added to the thread is at least two weeks old (this is to ensure that
  34. the thread is dead before adding it to the digest).  Article threads that
  35. consist of only one message are generally not included in the digest.
  36.  
  37. The digest is officially distributed by two means, by email and ftp.
  38.  
  39. If you want to receive the digest by mail, send email to listserv@ens.fr
  40. with no subject and one of the following commands as body:
  41.     help                        Sends you a summary of commands
  42.     subscribe csmp-digest Your Name    Adds you to the mailing list
  43.     signoff csmp-digest            Removes you from the list
  44. Once you have subscribed, you will automatically receive each new
  45. issue as it is created.
  46.  
  47. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  48. Questions related to the ftp site should be directed to
  49. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  50. digest are available there.
  51.  
  52. Also, the digests are available to WAIS users.  To search back issues
  53. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  54. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  55.  
  56.  
  57. -------------------------------------------------------
  58.  
  59. >From Jerry.Halstead@launchpad.unc.edu (jerry halstead)
  60. Subject: Finding a drive's SCSI ID
  61. Date: 27 May 1994 22:49:40 GMT
  62. Organization: University of North Carolina Extended Bulletin Board Service
  63.  
  64. I am writing a program that uses GetVInfo to get a list of drives the Mac
  65. sees (and snarf information about them) and then a lower level SCSI
  66. routine to go out and find out what drives are on the SCSI chain.  After
  67. getting this info I would like to be able to match the GetVInfo with the
  68. device info I found, determining which drives are Mac supported drives and
  69. which are unformatted or other types of SCSI devices.  Any ideas how to
  70. accomplish this?  Here's what I have so far, first here's the infor from
  71. GetVInfo:
  72.  
  73.       Drive 9:  Volume Ref: -1;  Bytes free: 92809728, Name: 'Quack'
  74.  
  75. Then my low level SCSI routine returns the following:
  76.  
  77.          Device ID: 2
  78.       dev type: 0
  79.               qual: 0
  80.            version: 1
  81.           response: 1
  82.            add len: 31
  83.              vendor: MAXTOR  LXT-340S        6.75
  84.      productId: LXT-340S        6.75
  85.     productRev: 6.75
  86.     data: 45 52 02 00 00 0a 26 38 
  87.         00 00 00 00 00 00 00 00 
  88.         00 02 00 00 00 40 00 05 
  89.         01 01 00 0a 25 fffffff5 00 08 }
  90.  
  91. I know these two collections of info are the same, but how do I enlighten
  92. my program?  How can I get a drive's SCSI ID by using vRefNum, or how can
  93. I get the name of a Mac drive using low level SCSI routines?  Is there a
  94. handy routine for this, or do I need to learn more about the format of Mac
  95. disks (say it ain't so!).
  96.  
  97. Tanks!
  98.  
  99. Oh, btw, the data below productRev is from reading sector zero on the
  100. drive: is there signifigance to the "45 52 02"? I found it on a couple of
  101. Mac drives I was peeking at.
  102. --
  103. - ----------------------------------------------------------------------------
  104.  \ The above does not represent OIT, UNC-CH, laUNChpad, or its other users. /
  105.    ------------------------------------------------------------------------
  106.  
  107. +++++++++++++++++++++++++++
  108.  
  109. >From dshayer@netcom.com (David Shayer)
  110. Date: Sat, 28 May 1994 03:13:44 GMT
  111. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  112.  
  113. jerry halstead (Jerry.Halstead@launchpad.unc.edu) wrote:
  114. : I am writing a program that uses GetVInfo to get a list of drives the Mac
  115. : sees (and snarf information about them) and then a lower level SCSI
  116. : routine to go out and find out what drives are on the SCSI chain.  After
  117. : getting this info I would like to be able to match the GetVInfo with the
  118. : device info I found, determining which drives are Mac supported drives and
  119. : which are unformatted or other types of SCSI devices.  Any ideas how to
  120. : accomplish this?  
  121.  
  122. You can match the driver refnum against the scsi id.
  123. See IM 2 p 191 for the formula for calculating the unit table slot
  124. for a driver if you know it's refnum.  See IM 4 p 215 for a list of which
  125. drivers go where in the unit table.  Another case of its obvious if you
  126. had only known to look there.
  127.  
  128. To summarize IM, scsi drivers go in slots 32-40 in the unit table in
  129. order, so the dirver for scsi 0 is in slot 32, scsi 1 is in slot 1, etc.
  130. slot number = -(refnum-1)
  131. So the driver for scsi 0 has refnum -33, scsi 1 has refnum -34, etc.
  132.  
  133. : Oh, btw, the data below productRev is from reading sector zero on the
  134. : drive: is there signifigance to the "45 52 02"? I found it on a couple of
  135. : Mac drives I was peeking at.
  136.  
  137. $4552 is 'ER', the signature in block 0, the driver map.  See IM 5 p 577
  138. for the format of the driver map.  I'd advise against modifying the driver
  139. map, unless you have a backup of your drive, and you intend on testing
  140. the restore option of your backup software.   :-)
  141.  
  142. David Shayer
  143. shayer@applelink.apple.com
  144. Freelance Hacker
  145.  
  146.  
  147. +++++++++++++++++++++++++++
  148.  
  149. >From tzs@u.washington.edu (Tim Smith)
  150. Date: 28 May 1994 11:37:15 GMT
  151. Organization: University of Washington School of Law, Class of '95
  152.  
  153. David Shayer <dshayer@netcom.com> wrote:
  154. >You can match the driver refnum against the scsi id.
  155. >See IM 2 p 191 for the formula for calculating the unit table slot
  156. >for a driver if you know it's refnum.  See IM 4 p 215 for a list of which
  157. >drivers go where in the unit table.  Another case of its obvious if you
  158. >had only known to look there.
  159.  
  160. Here's another way, that has the advantage of working even if Apple
  161. stops using a straightforward mapping between refnum and SCSI ID.
  162. Do an illegal command via the SCSI Manager on the SCSI drive whose
  163. Mac driver you wish to find (reading block 0xFFFFFFFF is a good
  164. command here, unless it's a really big drive).  Do not do a
  165. REQUEST SENSE command.  Then, read a block through one of the Mac
  166. drivers.  Now do a REQUEST SENSE via the SCSI Manager to the
  167. disk.  If there is no sense data, then your access through the
  168. Mac driver must have issued a command to that drive, thus wiping
  169. out the sense data from the failed command, and you know that was
  170. the Mac driver for that SCSI device.  If the sense data is still
  171. there, repeat the process, using a different Mac driver next time,
  172. and so on, until you find the right one.
  173.  
  174. Drawback: this assumes SCSI devices that follow the SCSI spec.  There
  175. are some popular disks out there that don't quite get this right.  In
  176. particular, I seem to recall seeing one that does not clear the sense
  177. data for a failed command when it gets a subsequent command.
  178.  
  179. Drawback: this is the kind of thing someone might do on DOS (in fact,
  180. that's how some DOS SCSI drivers that load from config.sys determine
  181. what mapping the SCSI BIOS set up from SCSI disks to INT 13h drives),
  182. so your reputation might suffer.
  183.  
  184. Drawback: this assumes you can control all I/O.  If someone can come in
  185. and do a file access (e.g., perhaps through file shareing?), they may
  186. confuse things.
  187.  
  188. --Tim Smith
  189.  
  190. +++++++++++++++++++++++++++
  191.  
  192. >From rang@winternet.com (Anton Rang)
  193. Date: 03 Jun 1994 00:04:59 GMT
  194. Organization: Minnesota Angsters
  195.  
  196. In article <dshayerCqHsyw.A1L@netcom.com> dshayer@netcom.com (David Shayer) writes:
  197. > [ about ways to get the scsi id given a volume ]
  198. >
  199. >You can match the driver refnum against the scsi id.
  200. >See IM 2 p 191 for the formula for calculating the unit table slot
  201. >for a driver if you know it's refnum.  See IM 4 p 215 for a list of which
  202. >drivers go where in the unit table.  Another case of its obvious if you
  203. >had only known to look there.
  204.  
  205.   This works with the old SCSI Manager.  If SCSI Manager 4.3 is
  206. installed, you should call one of its routines instead, as the old
  207. mapping only works for devices visible to the virtual SCSI bus.  I
  208. think it's a "LookupRefNumXref", but haven't got my docs here.
  209. --
  210. Anton Rang (rang@winternet.com)
  211.  
  212. ---------------------------
  213.  
  214. >From mpcline@cats.ucsc.edu (Matthew Paul Cline)
  215. Subject: How to tell which volume was booted from?
  216. Date: 3 Jun 1994 23:55:02 GMT
  217. Organization: University of California, Santa Cruz
  218.  
  219.  
  220.     The subject says it all.  Thanks in advance.
  221. -- 
  222. Poodles have no honor.               Have you hugged your shoggoth today?
  223. GE d? -p+ c++(+++) l++ u++ e+ m+ s/- n+(-) h+ f !g w+ t+ r y+
  224.  
  225. +++++++++++++++++++++++++++
  226.  
  227. >From mclow@coyote.csusm.edu (Marshall Clow)
  228. Date: 3 Jun 1994 17:31:48 -0700
  229. Organization: California State University San Marcos
  230.  
  231. Matthew Paul Cline (mpcline@cats.ucsc.edu) wrote:
  232.  
  233. >    The subject says it all.  Thanks in advance.
  234.  
  235. Depends how esoteric you want to get. If you want the current
  236. system volume (almost always the same volume that you booted
  237. from), call SysEnvirons and resolve the wdRefNum for the system
  238. folder into a vRefNum/DirID using GetWDInfo.
  239.  
  240. If you really want to know what volume was booted from, I think
  241. that you are out of luck. Suppose (System 6, now), you booted from
  242. a floppy, switch-launched to a RAM disk, and unmounted the floppy.
  243.  
  244. Marshall Clow
  245. Aladdin Systems
  246. mclow@san_marcos.csusm.edu
  247.  
  248.  
  249. +++++++++++++++++++++++++++
  250.  
  251. >From ivanski@world.std.com (Ivan M CaveroBelaunde)
  252. Date: Sat, 4 Jun 1994 01:56:27 GMT
  253. Organization: The World Public Access UNIX, Brookline, MA
  254.  
  255. mclow@coyote.csusm.edu (Marshall Clow) writes:
  256. >Matthew Paul Cline (mpcline@cats.ucsc.edu) wrote:
  257. >>    The subject says it all.  Thanks in advance.
  258. >Depends how esoteric you want to get. If you want the current
  259. >system volume (almost always the same volume that you booted
  260. >from), call SysEnvirons and resolve the wdRefNum for the system
  261. >folder into a vRefNum/DirID using GetWDInfo.
  262. >If you really want to know what volume was booted from, I think
  263. >that you are out of luck. Suppose (System 6, now), you booted from
  264. >a floppy, switch-launched to a RAM disk, and unmounted the floppy.
  265.  
  266. Actually, that's not quite right. I believe that the vRefNum of the boot
  267. volumes is *always* -1 (it's in a technote somewhere - the same one that
  268. states that the dirID for the root directory of a volumes is always 2).
  269.  
  270. Hope this helps,
  271.  
  272. -Ivan
  273. - -
  274. Ivan Cavero Belaunde (ivanski@world.std.com)
  275. Avid VideoShop Project Lead
  276. Avid Technology, Inc.
  277.  
  278.  
  279. +++++++++++++++++++++++++++
  280.  
  281. >From grobbins@apple.com (Grobbins)
  282. Date: 3 Jun 1994 20:07:46 -0700
  283. Organization: Skunkworks
  284.  
  285. In article <2sofsm$fsh@darkstar.UCSC.EDU>,
  286. Matthew Paul Cline <mpcline@cats.ucsc.edu> wrote:
  287. >The subject says it all.
  288.  
  289. No, it doesn't.  At present, the boot disk has a vRefNum of -1.  
  290. But that may not be true down the road; indeed, the system may use
  291. some more complex boot mechanisms, perhaps including the use of
  292. servers, volumes in ROM, temporary volumes, or disks made of toasted
  293. raisin bread.  Applications should not generally assume anything about
  294. the boot volume; in particular, it may not be local, may not be
  295. writable, and may not have all of its raisins.
  296.  
  297. So what is it you are trying to do?  If you can use the call FindFolder
  298. or the application's file spec (from the GetProcessInformation call)
  299. those may provide more reliable information.  For general information
  300. on booting and disk organization, take a look at Inside Mac:Files
  301. p 2-54 and following, and Inside Mac:Devices, ch 4.
  302.  
  303. Grobbins              grobbins@apple.com
  304.  
  305. Usual disclaimers apply.
  306.  
  307.  
  308. +++++++++++++++++++++++++++
  309.  
  310. >From blob@apple.com (Brian Bechtel)
  311. Date: 4 Jun 1994 07:09:13 -0700
  312. Organization: Apple Computer, Inc., Cupertino, California
  313.  
  314. grobbins@apple.com (Grobbins) writes:
  315.  
  316. >In article <2sofsm$fsh@darkstar.UCSC.EDU>,
  317. >Matthew Paul Cline <mpcline@cats.ucsc.edu> wrote:
  318. >>The subject says it all.
  319.  
  320. >No, it doesn't.  At present, the boot disk has a vRefNum of -1.  
  321. >But that may not be true down the road; indeed, the system may use
  322. >some more complex boot mechanisms, perhaps including the use of
  323. >servers, volumes in ROM, temporary volumes, or disks made of toasted
  324. >raisin bread.  Applications should not generally assume anything about
  325. >the boot volume; in particular, it may not be local, may not be
  326. >writable, and may not have all of its raisins.
  327.  
  328. Augh!  First the Caffeine Manager, now the Toasted Raisin Bread
  329. Manager.... when will it all stop?
  330.  
  331.  
  332. Greg's right.  Use FindFolder.
  333.  
  334. --Brian Bechtel     blob@apple.com     "My opinion, not Apple's"
  335.  
  336. +++++++++++++++++++++++++++
  337.  
  338. >From omh@cs.brown.edu (Owen M. Hartnett)
  339. Date: Sat, 4 Jun 1994 17:47:36 GMT
  340. Organization: Brown University Department of Computer Science
  341.  
  342. In article <2sq1u9$c3p@apple.com> blob@apple.com (Brian Bechtel) writes:
  343. >grobbins@apple.com (Grobbins) writes:
  344. >
  345. >Augh!  First the Caffeine Manager, now the Toasted Raisin Bread
  346. >Manager.... when will it all stop?
  347.  
  348. In the new Universal Headers, both the Caffeine Manager and the Toasted
  349. Raisin Bread Manager fall under the direction of the Grocery Manager.
  350.  
  351. -Owen
  352.  
  353.  
  354. -- 
  355. Owen Hartnett                omh@cs.brown.edu
  356. "FAITH, n. Belief without evidence in what is told by one who speaks
  357.         without knowledge, of things without parallel."
  358.             -Ambrose Bierce - The Devil's Dictionary
  359.  
  360. +++++++++++++++++++++++++++
  361.  
  362. >From mpcline@cats.ucsc.edu (Matthew Paul Cline)
  363. Date: 4 Jun 1994 20:20:39 GMT
  364. Organization: University of California, Santa Cruz
  365.  
  366.  
  367. In <2sor62$rqh@apple.com> grobbins@apple.com (Grobbins) writes:
  368.  
  369. >In article <2sofsm$fsh@darkstar.UCSC.EDU>,
  370. >Matthew Paul Cline <mpcline@cats.ucsc.edu> wrote:
  371. >>The subject says it all.
  372.  
  373.  
  374. >So what is it you are trying to do?  If you can use the call FindFolder
  375. >or the application's file spec (from the GetProcessInformation call)
  376. >those may provide more reliable information.  For general information
  377. >on booting and disk organization, take a look at Inside Mac:Files
  378. >p 2-54 and following, and Inside Mac:Devices, ch 4.
  379.  
  380. I am looking for a way to uniquely identify a Mac.  One idea was to  to
  381. use the format time of the boot disk as the Macs ID number.  However,
  382. if identifying a suitable drive will become that complicated, I'll figure
  383. out another way.
  384. -- 
  385. Poodles have no honor.               Have you hugged your shoggoth today?
  386. GE d? -p+ c++(+++) l++ u++ e+ m+ s/- n+(-) h+ f !g w+ t+ r y+
  387.  
  388. +++++++++++++++++++++++++++
  389.  
  390. >From mclow@coyote.csusm.edu (Marshall Clow)
  391. Date: 4 Jun 1994 14:28:59 -0700
  392. Organization: California State University San Marcos
  393.  
  394. Matthew Paul Cline (mpcline@cats.ucsc.edu) wrote:
  395.  
  396. >In <2sor62$rqh@apple.com> grobbins@apple.com (Grobbins) writes:
  397.  
  398. >>In article <2sofsm$fsh@darkstar.UCSC.EDU>,
  399. >>Matthew Paul Cline <mpcline@cats.ucsc.edu> wrote:
  400. >>>The subject says it all.
  401.  
  402.  
  403. >>So what is it you are trying to do?  
  404.  
  405. >I am looking for a way to uniquely identify a Mac.  One idea was to  to
  406. >use the format time of the boot disk as the Macs ID number.  However,
  407. >if identifying a suitable drive will become that complicated, I'll figure
  408. >out another way.
  409.  
  410. Why not use the format time for the current system volume? (instead of
  411. the boot volume) It's a lot easier to get!
  412.  
  413. If the mac has built-in ethernet, then the (hardware) ethernet address
  414. is unique to that machine (NOT the IP address).
  415.  
  416. Other than that, there is NO foolproof method to uniquely identify a
  417. Macintosh. The creation date for the system disk is a reasonable way
  418. to distinguish macintoshes, but you should plan for failure. In a lab
  419. environment, some sysadmins use disk-cloning software to keep a bunch of
  420. machines' configuration identical. Some of these programs just use SCSI
  421. commands to completely replicate a disk. Every bit. Imagine your software
  422. seeing 50 macs with identical disks, down to the volume's creation date.
  423.  
  424. Marshall Clow
  425. Aladdin Software
  426. mclow@san_marcos.csusm.edu
  427.  
  428.  
  429.  
  430. +++++++++++++++++++++++++++
  431.  
  432. >From jumplong@aol.com (Jump Long)
  433. Date: 4 Jun 1994 23:35:03 -0400
  434. Organization: America Online, Inc. (1-800-827-6364)
  435.  
  436. In article <2sofsm$fsh@darkstar.UCSC.EDU>, mpcline@cats.ucsc.edu
  437. (Matthew Paul Cline) writes:
  438.  
  439. > How to tell which volume was booted from?
  440.  
  441. This will give you the name and vRefNum of the current system disk
  442. which (as many have noted) may or may not be the boot volume:
  443.  
  444.  OSErr result;
  445.  short foundVRefNum;
  446.  long foundDirID;
  447.  Str255 systemDiskName = "\p";
  448.  long freeBytes;
  449.  
  450.  result = FindFolder(kOnSystemDisk, kSystemFolderType,
  451. kDontCreateFolder,
  452.       &foundVRefNum, &foundDirID);
  453.  if ( result == noErr )
  454.  {
  455.   result = GetVInfo(foundVRefNum, systemDiskName, &foundVRefNum,
  456. &freeBytes);
  457.   if ( result == noErr )
  458.    printf("%#s\n",systemDiskName);
  459.  }
  460.  
  461. - Jim Luther
  462.  
  463.  
  464. ---------------------------
  465.  
  466. >From Steve Ethier <ethier@novell.com>
  467. Subject: Open Transport & ASLM (Was: Re: ASLM)
  468. Date: Wed, 25 May 1994 19:49:08 GMT
  469. Organization: Novell, Inc.
  470.  
  471. In article <CqDBHC.FA9@world.std.com> John McEnerney,
  472. johnmce@world.std.com writes:
  473. >Jim.Matthews@dartmouth.edu (Jim Matthews) writes:
  474. >
  475. >>Me too; fortunately they don't.  OpenTransport has a procedural
  476. interface
  477. >>that can be called from any development system that supports Pascal
  478. >>calling conventions (i.e. any development system that can call the Mac
  479. >>Toolbox).  So I believe it's a true statement that anything you can do
  480. >>today with the driver-based network APIs (.mpp, .atp, .xpp, .ipp) will
  481. be
  482. >>possible under OpenTransport from CodeWarrior.  I don't see any reason
  483. why
  484. >>I shouldn't be able to build an OpenTransport/TCP version of Fetch in
  485. >>CodeWarrior.
  486. >
  487. >If OpenTransport uses a 'pascal' procedural interface and uses ASLM only 
  488. >as a DLL solution, then the calling convention/runtime representation 
  489. >issue go away. It may be possible to get this to work with CodeWarrior 
  490. >with a modest amount of effort. Can someone point me to the proper 
  491. >documentation for building for OpenTransport?
  492.  
  493. Jim and John (and whoever else if following this thread), maybe I don't
  494. understand what is going on with these interfaces, but this is my take on
  495. it.
  496.  
  497. Apple's implementation of AppleTalk and TCP for Open Transport will
  498. support the old "paramblock" style APIs for backwards compatibility with
  499. existing applications.  In this case, having Open Transport in the ASLM
  500. architecture is really a non-issue.  As far as I know, Open Transport
  501. itself doesn't support the "paramblock" APIs, it is up to the protocol
  502. developer to provide that support (i.e., when I port MacIPX over to Open
  503. Transport, I will have to write additional code in order to support the
  504. existing "paramblock" style MacIPX APIs). 
  505.  
  506. Then, Open Transport provides the X/Open APIs in the following forms:
  507. standard XTI APIs which are procedural interfaces (and really are
  508. synchronous APIs), Apple's superset of the XTI APIs with a procedural
  509. interface (I believe their superset provides async operation, probably
  510. turns them into Pascal interfaces, etc.), and finally, Apple's superset
  511. of the XTI APIs in an object-oriented form.
  512.  
  513. As I understand it, *all* of the XTI Open Transport interfaces are only
  514. available via ASLM.  Even if you use the procedural XTI interface, you'll
  515. still need to communicate with the ASLM.  Also, from my perspective, I
  516. don't need the OO APIs at this time.  If I could get Metrowerks and
  517. Symantec support of procedural interfaces into Open Transport and the
  518. ASLM, this would make me happy for a while.  At least developers would be
  519. able to use some of the new Open Transport APIs with Metrowerks and
  520. Symantec.
  521.  
  522. I believe Garry Hornbuckle of Apple is acutely aware of all these issues
  523. and is working on getting them resolved.
  524.  
  525. Steve Ethier
  526. ethier@wc.novell.com
  527.  
  528. +++++++++++++++++++++++++++
  529.  
  530. >From johnmce@world.std.com (John McEnerney)
  531. Date: Thu, 26 May 1994 02:49:36 GMT
  532. Organization: The World Public Access UNIX, Brookline, MA
  533.  
  534.  
  535. >As I understand it, *all* of the XTI Open Transport interfaces are only
  536. >available via ASLM.  Even if you use the procedural XTI interface, you'll
  537. >still need to communicate with the ASLM.  Also, from my perspective, I
  538. >don't need the OO APIs at this time.  If I could get Metrowerks and
  539. >Symantec support of procedural interfaces into Open Transport and the
  540. >ASLM, this would make me happy for a while.  At least developers would be
  541. >able to use some of the new Open Transport APIs with Metrowerks and
  542. >Symantec.
  543.  
  544. Someone has kindly volunteered to look into this for me. If there are no 
  545. OOP issues and the 'pascal' calling conventions are used, it may be 
  546. possible to use the OpenTransport interface from CodeWarrior. (In that 
  547. case, although OpenTransport is using ASLM, your program isn't except to 
  548. initialize/terminate it) This leaves only issues of importing the 
  549. OpenTransport and ASLM .o files--it may not work the first time, but this 
  550. is easier to fix than the C++ calling conventions.
  551.  
  552. Everyone should feel free to keep me posted with new developments.
  553.  
  554. -- John McEnerney, Metrowerks PowerPC Product Architect
  555.  
  556.  
  557. +++++++++++++++++++++++++++
  558.  
  559. >From Steve Ethier <ethier@novell.com>
  560. Date: Thu, 26 May 1994 17:13:54 GMT
  561. Organization: Novell, Inc.
  562.  
  563. In article <CqE2Ip.3Kn@world.std.com> John McEnerney,
  564. johnmce@world.std.com writes:
  565. >Someone has kindly volunteered to look into this for me. If there are no 
  566. >OOP issues and the 'pascal' calling conventions are used, it may be 
  567.  
  568. I didn't volunteer because I don't have the cycles at this time, but if
  569. the kind soul helping you out isn't already familiar with XTI/TLI code, I
  570. do have some test code that I would be willing to share with that person
  571. to jump start the effort.  This code uses TLI (which is very similar to
  572. XTI), so it would take some work to move over to Apple's Open Transport
  573. APIs, but I think Open Transport also supports the XTI APIs, so maybe
  574. this person could just try those interfaces.
  575.  
  576. The only other drawback to this code is that I think the server side of
  577. it was a NetWare NLM I had also put together.  Of course, this code is 3
  578. years old, so I don't remember exactly how it went together.
  579.  
  580. Anyway, if this person is interested in seeing this code, please contact
  581. me.
  582.  
  583. Steve Ethier
  584. Internet: ethier@wc.novell.com
  585. Phone: 510-975-4518
  586. AppleLink: NOVELL.WCENG (Put [SLE] in the subject so that it'll get
  587. routed to me)
  588.  
  589. +++++++++++++++++++++++++++
  590.  
  591. >From garryh@seeding.apple.com (Garry Hornbuckle)
  592. Date: 4 Jun 1994 01:06:54 GMT
  593. Organization: Apple Computer
  594.  
  595. In article <CqE2Ip.3Kn@world.std.com>, johnmce@world.std.com (John
  596. McEnerney) wrote:
  597.  
  598. > Someone has kindly volunteered to look into this for me. If there are no 
  599. > OOP issues and the 'pascal' calling conventions are used, it may be 
  600. > possible to use the OpenTransport interface from CodeWarrior. (In that 
  601. > case, although OpenTransport is using ASLM, your program isn't except to 
  602. > initialize/terminate it) This leaves only issues of importing the 
  603. > OpenTransport and ASLM .o files--it may not work the first time, but this 
  604. > is easier to fix than the C++ calling conventions. 
  605.  
  606. DISCLAIMER: I'm an programmer/software engineer turned marketing guy. I've
  607. written a lot of code in my life, but compilers, linkers, or dynamic
  608. loading architectures are not on my resume. The following comments are
  609. based on someone else's (informed) explanation to me of what the issues are
  610. here. If I screw-up or misstate something here, it's my error. 
  611.  
  612. Apple Shared Library Manager is one of several dynamic link and load
  613. architectures in the Mac OS today (others include the Code Fragment
  614. Manager, the upcoming implementation of System Object Model, the QuickTime
  615. component manager, and the Comm ToolBox). The differences between each of
  616. these, and when to use what, are important discussions...but not for this
  617. thread.
  618.  
  619. If you possibly can, you should get access to a video or audio tape of the
  620. '94 WWDC session titled "DLLs and Shared Objects on Macintosh" - the first
  621. 20-30 minutes of the session was spent explaining key differences between
  622. these technologies and looking at how to pick which one to use for the
  623. specific job at hand.
  624.  
  625. Almost by definition, DLL architectures need to have some knowledge of code
  626. internals and runtime "stuff". (SOM avoids many of these problems, but
  627. requires you to describe things first in an IDL). During the design and
  628. implementation of ASLM, when it came time to "know things and stuff", ASLM
  629. engineers looked at MPW's behavior as a reference model. Whether this is
  630. good or bad probably depends on what you think about MPW (which is also not
  631. the point of this thread). What is important to know, however, is that
  632. other compiler/linker developers have made choices, for their own very good
  633. and important reasons, to do "things" and store "stuff" differently than
  634. MPW does.
  635.  
  636. As a result, today ASLM is straightforward to use with MPW, but difficult
  637. or even impossible to use with other compiler/linker tools such as the
  638. MetroWerks or Symantec environments. This is an issue of concern for all
  639. ASLM developers. 
  640. Based on what I've been able to understand about this, I believe that there
  641. are five key things that must be true to state that "Compiler XXXX supports
  642. ASLM" or conversely, that "ASLM supports Compiler XXXX". And there are four
  643. different levels of interoperability possible.
  644.  
  645. Level One Compatiblity
  646. - --------------------
  647. At this level, I can build C or Pascal language programs that use the
  648. services of ASLM and load ASLM shared libaries. The C or Pascal language
  649. programs can be built with the compiler/linker of my choice. The shared
  650. libraries must be built with MPW, or with a compiler/linker that conforms
  651. to all of MPW's "stuff". (A MetroWerks C or Pascal app could use ASLM to
  652. load and share a MPW shared library).
  653.  
  654. To reach Level One Compatibility, 3 things must be true:
  655.  
  656. ¥ the Compiler/Linker chosen must be able to import the 'LibraryMgr.o' file
  657. supplied in the ASLM developer kit. 
  658.  
  659. ¥ the Compiler/Linker chosen and ASLM must agree on data representation
  660. issues such as insertion of padding bytes, struct alignment, etc.
  661.  
  662. This agreement could come because the compiler handles these things the
  663. same way as does MPW (and thus conforms to ASLM's expectation), or possibly
  664. because the compiler offers a switch to conform to MPW conventions as an
  665. option. By itself, having ASLM offer a switch to conform to the compiler's
  666. expectations would not be sufficient to achieve this level of compatibility
  667. (I don't think), because the shared libaries would have been built with MPW
  668. and thus there would potentially be disagreement on this fundamental issue.
  669.  
  670. ¥    the Compiler/Linker chosen and ASLM must agree on calling conventions; Is
  671. it going to be C for C, Pascal for Pascal? Pascal for everything?
  672.  
  673. Again, this agreement could come because the compiler handles these things
  674. the same way as does MPW (and thus conforms to ASLM's expectation), or
  675. because the compiler offers a switch to conform to MPW conventions as an
  676. option. By itself, having ASLM offer a switch to conform to the compiler's
  677. expectations would not be sufficient to achieve this level of compatibility
  678. (I don't think), because the shared libaries would have been built with MPW
  679. and thus there would potentially be disagreement on this fundamental issue.
  680.  
  681. Level Two Compatibility
  682. - ---------------------
  683. At this level, I can also build C++ programs that use the services of ASLM
  684. and load ASLM shared libaries. The C++ programs can be built with the
  685. compiler/linker of my choice. The shared libraries must be built with MPW,
  686. or with a compiler/linker that conforms to all of MPW's "stuff". (A
  687. MetroWerks C++ app could use ASLM to load and share a MPW shared library).
  688.  
  689. To reach Level Two Compatibility, all three conditions from Level One must
  690. be satisfied. In addition, the following condition must also be true:
  691.  
  692. ¥ the Compiler/Linker chosen and ASLM must agree on the V-table format in
  693. use.
  694.  
  695. This agreement could come because the compiler handles these things the
  696. same way as does MPW (and thus conforms to ASLM's expectation), or because
  697. the compiler offers a switch to conform to MPW conventions. By itself,
  698. having ASLM offer a switch to conform to the compiler's expectations would
  699. not be sufficient to achieve this level of compatibility (I don't think),
  700. because the shared libaries would have been built with MPW and thus there
  701. would potentially be disagreement on this fundamental issue.
  702.  
  703. Level Three Compatibility
  704. - -----------------------
  705. At this level, I can also build shared libraries that can be loaded by ASLM
  706. upon direction from a client application. The client application and the
  707. shared libaries can be built with THE SINGLE compiler/linker of my choice.
  708. (A MetroWerks C, Pascal, or C++ application could use ASLM to load a
  709. MetroWerks shared library).
  710.  
  711. To reach Level Three Compatibility, all four conditions from Level One and
  712. Level Two must be satisfied. In addition, the following condition must also
  713. be true:
  714.  
  715. ¥ the Compiler/Linker chosen and ASLM must agree on the format of the
  716. object file.
  717.  
  718. This agreement could come because the compiler handles these things the
  719. same way as does MPW (and thus conforms to ASLM's expectation), or because
  720. the compiler offers a switch to conform to MPW conventions, _or_ by having
  721. an ASLM switch that directs ASLM to conform to the compiler's expectations
  722. for "stuff".
  723.  
  724. Level Four Compatibility
  725. - ----------------------
  726. At this level I can build C, Pascal or C++ client applications, as well as
  727. shared libraries that can be loaded by ASLM upon direction from a client
  728. application. The client application and the shared libaries can be built
  729. with a MIX-AND-MATCH set of compilers/linkers of my choice. Libraries, both
  730. procedural and object-oriented, from multiple compilers could be
  731. dynamically loaded and shared. (A MetroWerks main could load a shared
  732. library that had been built with Symantec tools, for example).
  733.  
  734. To reach Level Four Compatibility, all five conditions from Level One
  735. through Level Three must be satisfied. In addition, the following condition
  736. must also be true:
  737.  
  738. ¥ ALL Compilers/Linkers and ASLM must agree on ALL the "stuff" outlined
  739. above.
  740.  
  741. This agreement, I believe, could only come through an industry or defacto
  742. standard representation and format for data, calling conventions, V-table
  743. formats, and object file formats. To my knowledge, no such single format
  744. agreement, spanning MPW, MetroWerks, and Symantec tools, exists (I'd love
  745. to be wrong on this). 
  746.  
  747. - ----------------------
  748.  
  749. I really appreciate the support for and interest in ASLM by applications
  750. and tool developers such as the great folks at MetroWerks and Symantec. I'm
  751. interested in working out multi-tool support for ASLM, and am willing to
  752. seriously investigate changes to ASLM if there is a real possibility of
  753. getting to Level Four compatibility!
  754.  
  755. Comments and corrections are welcome. But please, no technical flames. I'm
  756. only the marketing guy. ;)
  757.  
  758.  
  759. Garry "also the ASLM guy" Hornbuckle
  760.  
  761. - ---------------------------------------------------------------------
  762. Garry Hornbuckle        Product Manager, Communications & Collaboration
  763. - ---------------------------------------------------------------------
  764. "If I told you that I   | email      garryh@seeding.apple.com
  765.  spoke only for myself  | applelink  HORNBUCKLE1
  766.  would you believe me?" | fax        (408) 974-1211
  767. - ---------------------------------------------------------------------
  768.  
  769. ---------------------------
  770.  
  771. >From jc@vivitech.com (John Cooper)
  772. Subject: Symantec at WWDC (Was: Symantec vs. Metrowerks? What to do?)
  773. Date: Sun, 22 May 1994 13:55:55 GMT
  774. Organization: Vivid Technologies Inc.
  775.  
  776. In article <2ren5c$f12@news.delphi.com> thundero@news.delphi.com (THUNDERONE@DELPHI.COM) writes:
  777. >> A couple of more things.  First, today, Symantec has announced some 
  778. >> new tools -- a subscription CD that has development versions of 
  779. >> compilers and such on it.
  780. >Hehehe...  I wonder where they got *that* idea.  But are Symantec's 
  781. >prereleases as stable as Metrowerks? Can you post some more details, 
  782. >or at least the month of the MacTech issue reviewing this CD? Symantec 
  783. >folks, you guys want to post some details? Phil? Tom?
  784.  
  785.    I heard from a friend who attended WWDC that Symantec was boo'ed and
  786. hissed at by a room full of developers during a seminar. Such a reception
  787. is usually reserved for Microsoft alone...
  788.  
  789.    This same friend also characterized Symantec's tools announcements as
  790. mostly: "We'll have that too, someday..." I guess developers weren't too
  791. impressed with Symantec this year.
  792.  
  793.    Can anyone else who attended offer their observations/opinions/insights?
  794.  
  795. -John
  796.  
  797. +--------------------------+------------------------------------------+
  798. | John R. Cooper           | Internet: jc@vivitech.com,               |
  799. | Vivid Technologies, Inc. |           jcooper@world.std.com          |
  800. | Waltham, MA 02154        | AOL:      JRCooper (jrcooper@aol.com)    |
  801. +--------------------------+------------------------------------------+
  802. | "God split himself into a myriad parts that he might have friends." |
  803. | This may not be true, but it sounds good and is no sillier than any |
  804. | other theology.                                                     |
  805. |                        -- Long's Notes --                           |
  806. +---------------------------------------------------------------------+
  807.  
  808. +++++++++++++++++++++++++++
  809.  
  810. >From mikel@intercon.com (Michael W. Wellman)
  811. Date: Mon, 23 May 1994 13:38:57 -0500
  812. Organization: InterCon Systems Corp., Herndon, VA, USA
  813.  
  814. In article <1994May22.135555.5162@vivitech.com>, jc@vivitech.com (John 
  815. Cooper) writes:
  816. >    I heard from a friend who attended WWDC that Symantec was boo'ed and 
  817. > hissed at by a room full of developers during a seminar. Such a 
  818. > reception is usually reserved for Microsoft alone... 
  819. >  
  820. >    This same friend also characterized Symantec's tools announcements 
  821. > as mostly: "We'll have that too, someday..." I guess developers 
  822. > weren't too impressed with Symantec this year. 
  823. >  
  824. >    Can anyone else who attended offer their observations/opinions/
  825. > insights? 
  826.  
  827. Symantec was repeatedly hissed at WWDC.  Essentially, every time Apple 
  828. mentioned their respective names during the "Developer Tools State of the 
  829. Union", Symantec was hissed and Metrowerks was applauded.
  830.  
  831. When it came time to do their presentations, Metrowerks blew everyone away.  
  832. Their demo consisted of their compiling the 68k version of Metrowerks, the 
  833. PowerPC version of Metrowerks, and MacApp 3.1; some 1.4 million lines of code 
  834. in some 11 minutes (in fact, the talking portion of the presentation finished 
  835. first so they stopped the compile before it all finished, but they were only 
  836. a few files from the end of MacApp).  This was followed by testimonials from 
  837. people from Adobe, Apple, Claris, and other companies.  Summary of the 
  838. testimonials:  Metrowerks not only cures cancer, it causes world peace.
  839.  
  840. By the time Symantec took the stage, no one was booing anymore simply because 
  841. everyone felt sorry for them.  They decided not to compile, not to show the 
  842. debugger, and when they went to show some of their "cool" stuff, it 
  843. repeatedly crashed.
  844.  
  845. To be fair, Symantec had added some nifty features to both their 7.0.1 
  846. release and their next generation environment.  You can finally open a file 
  847. without a project being open; you can open multiple projects; projects can be 
  848. nested nicely in the project window and double-clicking them opens another 
  849. project window; they support descending sub-projects and automatically 
  850. rebuilding them if necessary; they've got multiple-paned windows; etc.
  851.  
  852. The consensus seemed to be too little too late.
  853.  
  854. Personally, three of the five people I was with left immediately after the 
  855. Metrowerks demo to buy a copy of Metrowerks and see if we could get some 
  856. things compiled before dinner... ;-)
  857.  
  858. I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  859. dedicated to not supporting Apple's Shared Library Manager since you can't 
  860. use Open Transport without such support.
  861.  
  862. mikel
  863.  
  864.  
  865.  
  866.  
  867.  
  868. +++++++++++++++++++++++++++
  869.  
  870. >From mxmora@unix.sri.com (Matt Mora)
  871. Date: 23 May 94 23:10:26 GMT
  872. Organization: SRI International, Menlo Park, CA
  873.  
  874. In article <9405231338.AA57725@mikel.intercon.com> mikel@intercon.com 
  875. (Michael W. Wellman) writes:
  876.  
  877. >I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  878. >dedicated to not supporting Apple's Shared Library Manager since you can't 
  879. >use Open Transport without such support.
  880.  
  881.  
  882. Or that the OpenTransport team decided to use ASLM.
  883.  
  884.  
  885.  
  886. Xavier
  887.  
  888.  
  889.  
  890.  
  891.  
  892. -- 
  893. ___________________________________________________________
  894. Matthew Xavier Mora                       Matt_Mora@sri.com
  895. SRI International                       mxmora@unix.sri.com
  896. 333 Ravenswood Ave                    Menlo Park, CA. 94025
  897.  
  898. +++++++++++++++++++++++++++
  899.  
  900. >From d88-jwa@dront.nada.kth.se (Jon Wätte)
  901. Date: 24 May 1994 06:17:50 GMT
  902. Organization: The Royal Institute of Technology
  903.  
  904. >>I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  905. >>dedicated to not supporting Apple's Shared Library Manager since you can't 
  906. >>use Open Transport without such support.
  907.  
  908. >Or that the OpenTransport team decided to use ASLM.
  909.  
  910. Won't ASLM come on top of the CFM? And both MW and SC will of course
  911. support the CFM. The only thing left is making the name mangling
  912. conform to CFront standards.
  913.  
  914. Cheers,
  915.  
  916.                     / h+
  917. -- 
  918.  -- Jon W{tte, h+@nada.kth.se, Mac Software Engineer Deluxe --
  919.  
  920.   "From now on I will re-label the EQ on the deck as Fizz and Wobble
  921.    instead of HF and LF."
  922.  
  923. +++++++++++++++++++++++++++
  924.  
  925. >From Chris Hanson <chanson@mtlookitthat.chi.il.us>
  926. Date: Mon, 23 May 94 22:53:26 -0600
  927. Organization: Green Dragon Creations, Inc.
  928.  
  929.  
  930. In article <9405231338.AA57725@mikel.intercon.com>, Michael W. Wellman 
  931. writes:
  932.  
  933. > I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  934. > dedicated to not supporting Apple's Shared Library Manager since you can't 
  935. > use Open Transport without such support.
  936.  
  937. I think it's more Apple's fault, actually.  Shared Library Manager is designed 
  938. to work with MPW C++ (which is CFront 2.something, I think).  This is because 
  939. it explicitly supports only C++, and relies on the structure of MPW's virtual 
  940. tables and the way MPW munges method names.  Of course, since Apple has 
  941. committed to SOM I think they'd be stupid not to support Open Transport on it 
  942. also.  My bet is that they will; until SOM support is formally integrated into 
  943. the OS, we'll probably rely on ASLM for such matters.
  944.  
  945. TTFN,
  946. Chris
  947.  
  948. +++++++++++++++++++++++++++
  949.  
  950. >From mikel@intercon.com (Michael W. Wellman)
  951. Date: Tue, 24 May 1994 09:37:02 -0500
  952. Organization: InterCon Systems Corp., Herndon, VA, USA
  953.  
  954. I wrote:
  955. > > I'm personally disappointed that both Metrowerks and Symantec 
  956. > > seem pretty dedicated to not supporting Apple's Shared Library 
  957. > > Manager since you can't use Open Transport without such support. 
  958.  
  959. Chris Hanson <chanson@mtlookitthat.chi.il.us> wrote:
  960. > I think it's more Apple's fault, actually.  Shared Library Manager is 
  961. > designed to work with MPW C++ (which is CFront 2.something, I 
  962. > think).  This is because it explicitly supports only C++, and relies 
  963. > on the structure of MPW's virtual tables and the way MPW munges 
  964. > method names.  Of course, since Apple has committed to SOM I think 
  965. > they'd be stupid not to support Open Transport on it also.  My bet is 
  966. > that they will; until SOM support is formally integrated into the 
  967. > OS, we'll probably rely on ASLM for such matters. 
  968.  
  969. I vaguely recall something about SOM not being capable of dealing with issues 
  970. such as interrupts (you pay some prices for platform independence).  If this 
  971. memory is correct, it'd be very hard to build a networking structure on top 
  972. of it.
  973.  
  974. Also; in Apple's defense (or, more directly, in the Open Transport team's 
  975. defense), I don't believe SOM was available as an option when ASLM was 
  976. implemented.
  977.  
  978. Both Metrowerks and Symantec stated that it was the vtable dependencies that 
  979. made them not want to do the work, that they've spent a lot of time 
  980. optimizing their compilers to generate more efficient vtables, and that they 
  981. didn't want to spend still more time making them less efficient.
  982.  
  983. All of the issues make sense; but it's inconvenient having to give up 
  984. Metrowerks because of this (clearly, if Open Transport needs ASLM, I'm not 
  985. giving up ASLM).
  986.  
  987. mikel
  988.  
  989.  
  990.  
  991.  
  992.  
  993. +++++++++++++++++++++++++++
  994.  
  995. >From woody@alumni.caltech.edu (William Edward Woody)
  996. Date: 24 May 1994 18:08:55 GMT
  997. Organization: California Institute of Technology, Alumni Association
  998.  
  999. Michael W. Wellman <mikel@intercon.com> wrote:
  1000. >I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  1001. >dedicated to not supporting Apple's Shared Library Manager since you can't 
  1002. >use Open Transport without such support.
  1003.  
  1004. Call me stupid (having zero experience with ASLM), but on my E.T.O. #14
  1005. disk there's this directory (E.T.O.:Tools - Objects:Apple Shared Libary
  1006. Manager:ASLM 1.1.GM:ASLM Symantec Support) containing stuff which reportedly
  1007. allow you to develop and use ASLM with both Symantec C++ for MPW and
  1008. Symantec C++ for Macintosh v6.0.1.
  1009.  
  1010.                         - Bill
  1011. -- 
  1012.  "A secret face--a touch of grace        William Edward Woody
  1013.   A man must learn to give a little space    woody@alumni.cco.caltech.edu
  1014.   A peaceful state--a submissive trait
  1015.   A man must learn to gently dominate" -- Rush, "Animate"
  1016.  
  1017. +++++++++++++++++++++++++++
  1018.  
  1019. >From johnmce@world.std.com (John McEnerney)
  1020. Date: Tue, 24 May 1994 21:11:09 GMT
  1021. Organization: The World Public Access UNIX, Brookline, MA
  1022.  
  1023. mikel@intercon.com (Michael W. Wellman) writes:
  1024.  
  1025. >Both Metrowerks and Symantec stated that it was the vtable dependencies that 
  1026. >made them not want to do the work, that they've spent a lot of time 
  1027. >optimizing their compilers to generate more efficient vtables, and that they 
  1028. >didn't want to spend still more time making them less efficient.
  1029.  
  1030. In order to support ASLM, every aspect of our C++ implementation would 
  1031. need to be identical to MPW cfront (on 68K) and PPCC (on PowerPC). This 
  1032. gives us very little latitude in improving calling conventions, vtables 
  1033. formats, name mangling, etc. all to support an interface which makes up 
  1034. at most 1% of your program. Seems like a heavy price to pay. (Which is 
  1035. not to say our current implementation is more efficient at the moment, 
  1036. but we'd certainly like it to continue optimizing it)
  1037.  
  1038. Furthermore, we'd need to generate MPW .o files on 68K and XCOFF files on 
  1039. PowerPC so that the ASLM tools could do their pre- and post-processing.
  1040. This would require again a substantial amount of work which is better 
  1041. spent improving our code generation, implementing templates, etc.
  1042.  
  1043. SOM solves many of these issues because it reduces the C++ interface to a 
  1044. C interface, and it is much easier to be compatible with that (we already 
  1045. are on PowerPC, will be soon on 68K)
  1046.  
  1047. >All of the issues make sense; but it's inconvenient having to give up 
  1048. >Metrowerks because of this (clearly, if Open Transport needs ASLM, I'm not 
  1049. >giving up ASLM).
  1050.  
  1051. Take this up with the Open Transport engineers. It was a shortsighted 
  1052. decision to use a technology supported only by Apple's tools. I can't 
  1053. believe that it was impossible to implement the necessary functionality 
  1054. without component C++ objects in ASLM shared libs.
  1055.  
  1056. We are working closely with Apple to support SOM and CFM (PowerPC and 68K).
  1057.  
  1058. -- John McEnerney, Metrowerks PowerPC Product Architect
  1059.  
  1060.  
  1061. +++++++++++++++++++++++++++
  1062.  
  1063. >From mxmora@unix.sri.com (Matt Mora)
  1064. Date: 24 May 1994 16:07:01 -0700
  1065. Organization: SRI International, Menlo Park, CA
  1066.  
  1067. In article <CqBs6M.D20@world.std.com> johnmce@world.std.com (John McEnerney) 
  1068. writes:
  1069.  
  1070. >Take this up with the Open Transport engineers. It was a shortsighted 
  1071.  
  1072. I did and he wasn't very happy about it. I guess I touched a raw nerve
  1073. but Garry Honbukle was very defensive about it. Oh well, looks
  1074. like I won't be doing any opentransport stuff anytime soon. Good
  1075. thing they are not going to break the old API.
  1076.  
  1077.  
  1078. >We are working closely with Apple to support SOM and CFM (PowerPC and 68K).
  1079.  
  1080. I agree with John. It seem like a much better way to go.
  1081.  
  1082.  
  1083.  
  1084. Xavier
  1085.  
  1086.  
  1087.  
  1088. -- 
  1089. ___________________________________________________________
  1090. Matthew Xavier Mora                       Matt_Mora@sri.com
  1091. SRI International                       mxmora@unix.sri.com
  1092. 333 Ravenswood Ave                    Menlo Park, CA. 94025
  1093.  
  1094. +++++++++++++++++++++++++++
  1095.  
  1096. >From zstern@adobe.com (Zalman Stern)
  1097. Date: Wed, 25 May 1994 01:52:08 GMT
  1098. Organization: Adobe Systems Incorporated
  1099.  
  1100. Jon W tte writes
  1101. > Won't ASLM come on top of the CFM? And both MW and SC will of course
  1102. > support the CFM. The only thing left is making the name mangling
  1103. > conform to CFront standards.
  1104.  
  1105. Does ASLM depend on vtable layout? Perhaps the real answer is to standardize  
  1106. the whole C++ runtime to such a level that objects created by different  
  1107. compilers can be linked together. (What? Don't make you laugh so hard? MY  
  1108. apologies :-))
  1109. --
  1110. Zalman Stern           zalman@adobe.com            (415) 962 3824
  1111. Adobe Systems, 1585 Charleston Rd., POB 7900, Mountain View, CA 94039-7900
  1112.    Never let a "final candidate" subscript get above the age of consent.
  1113.  
  1114. +++++++++++++++++++++++++++
  1115.  
  1116. >From johnmce@world.std.com (John McEnerney)
  1117. Date: Wed, 25 May 1994 07:06:07 GMT
  1118. Organization: The World Public Access UNIX, Brookline, MA
  1119.  
  1120. zstern@adobe.com (Zalman Stern) writes:
  1121.  
  1122. >Does ASLM depend on vtable layout? Perhaps the real answer is to standardize  
  1123. >the whole C++ runtime to such a level that objects created by different  
  1124. >compilers can be linked together. (What? Don't make you laugh so hard? MY  
  1125. >apologies :-))
  1126.  
  1127. While at Symantec I spent some time looking into all of the issues 
  1128. involved in supporting ASLM in the THINK compilers. I recall that ASLM 
  1129. exports an OOP interface to the many worthwhile features that it 
  1130. provides. This means that if you need to use any of these features, the 
  1131. code on the client side had better have the same naming conventions, 
  1132. vtable formats, and calling sequences as the code in the ASLM library.
  1133.  
  1134. There are other problems, such as tools which process the .o files output 
  1135. from the MPW compiler, though these may go away once CFM is universally 
  1136. supported.
  1137.  
  1138. However, the issue of compatible conventions doesn't go away. If a 
  1139. library exports an OOP interface, via ASLM or CFM, it would require that 
  1140. all compilers use the same conventions. SOM works around this by 
  1141. generating C++ wrappers to a C interface--your source code is in C++, but 
  1142. by the time a vtable is constructed or a virtual function is called, it 
  1143. has been reduced to simple C data structures and calling conventions.
  1144.  
  1145. I admit to never having looked into the exact requirements of Open 
  1146. Transport. I'll try to do some reading on it to see if a solution 
  1147. specific to Open Transport is possible.
  1148.  
  1149. -- John McEnerney, Metrowerks PowerPC Product Architect
  1150.  
  1151.  
  1152. +++++++++++++++++++++++++++
  1153.  
  1154. >From lambert_l@measurex.com (Leon Lambert)
  1155. Date: Wed, 25 May 1994 19:16:13 GMT
  1156. Organization: measurex
  1157.  
  1158. I'd like to thank John McEnerney from Metrowerks for taking
  1159. an interest in this discussion. I haven't noticed Symantec even
  1160. talking about it.
  1161.  
  1162.  
  1163. Let's all just get along :)
  1164.  
  1165. +++++++++++++++++++++++++++
  1166.  
  1167. >From d88-jwa@dront.nada.kth.se (Jon Wätte)
  1168. Date: 26 May 1994 17:56:45 GMT
  1169. Organization: The Royal Institute of Technology
  1170.  
  1171. >> I'm personally disappointed that both Metrowerks and Symantec seem pretty 
  1172. >> dedicated to not supporting Apple's Shared Library Manager...
  1173.  
  1174. >Can you expand on this?  What stands in the way of using Metrowerks to
  1175. >do ASLM work?  (Particular language features?).  
  1176.  
  1177. ASLM relies on CFronts name mangling and vtable formats.
  1178.  
  1179. Case closed. :-)
  1180.  
  1181. >meantime I'd like to get some small OpenDoc parts built and the only
  1182. >compiler I have here is CodeWarrior.  (I've also own the current rev of
  1183.  
  1184. No Can Do unless you a) replace ASLM or b) wait for the CFM/SOM version
  1185. due Any Year Now.
  1186.  
  1187. -- 
  1188.  -- Jon W{tte, h+@nada.kth.se, Mac Software Engineer Deluxe --
  1189.    This sig is less than 3 lines: Improve the UseNet S/N ratio!
  1190.  
  1191. +++++++++++++++++++++++++++
  1192.  
  1193. >From peter@ncrpda.curtin.edu.au (Peter N Lewis)
  1194. Date: 27 May 1994 07:42:43 +0800
  1195. Organization: NCRPDA, Curtin University
  1196.  
  1197. johnmce@world.std.com (John McEnerney) writes:
  1198.  
  1199. >zstern@adobe.com (Zalman Stern) writes:
  1200.  
  1201. >I admit to never having looked into the exact requirements of Open 
  1202. >Transport. I'll try to do some reading on it to see if a solution 
  1203. >specific to Open Transport is possible.
  1204.  
  1205.  
  1206. Garry says that SOM can't be used for Open Transport.  I don't know why,
  1207. but I do know that one of thse has to happen:
  1208.  
  1209. - Metrowerks supports ASLM in their Pascal compiler (seems quite unlikely).
  1210. - Symantec supports ASLM in THINK Pascal (fat chance!)
  1211. - Open Transport moves to SOM (Garry says this is impossible)
  1212. - Dylan supportsd ASLM and I move to it.
  1213.  
  1214. Or I could just find a new area on the Mac to work on....
  1215.     Peter.
  1216. -- 
  1217. I'm at a conference (WWDC) and on holiday until June 1, so my messages
  1218. will be short, delayed, imprecise, and less helpful than usual.  Sorry!
  1219. Peter N Lewis <peter.lewis@info.curtin.edu.au>       Ph: +61 9 368 2055
  1220.  
  1221. +++++++++++++++++++++++++++
  1222.  
  1223. >From phixus@netcom.com (Chris DeSalvo)
  1224. Date: Sat, 28 May 1994 06:43:16 GMT
  1225. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1226.  
  1227. Back the original thread:  No, Symantec wasn't booed and hissed that
  1228. badly.  There was a little, but it wasn't TOO much.  Yes, their TCL
  1229. 2.0 Demo (which was very simple) crashed.  But so did the first demo
  1230. of OpenDoc during the opening Keynote address.
  1231.  
  1232. In Symantec's favor:  They threw the most awesome party of the
  1233. convention!  It was at Gordon Biersch, a local bar/brewery.  The
  1234. fresh-brewed beer and the food were all awesome.
  1235.  
  1236. In regards to ASLM and it's dependency on CFront conventions:
  1237. I just read today that Apple has made an agreement with Symantec to do
  1238. a technology trade and get their compiler front-end, abandoning the
  1239. CFront stuff in the process.
  1240.  
  1241. Anyone wanna venture a speculation of what this means for future
  1242. development?  Also, I do recal in one of the WWDC sessions Apple
  1243. saying something to the effect that althrough a lot of the libraries
  1244. for the new technologies was OO-oriented, you didn't have to use an
  1245. OOPL to utilize them.  Anyone recall this, or was I too hung-over?
  1246.  
  1247. L8R
  1248. Chris
  1249. -- 
  1250. +-----------------------------------------------------------------+
  1251. | phixus@netcom.com           |   Macintosh:  Changing the world, |
  1252. | Chris De Salvo              |        one person at a time!      |
  1253. | Professional Mac Geek       |    -----------------------------  |
  1254. | for MacPlay, Inc.           |      (I wish they'd hurry up!)    |
  1255. +-----------------------------------------------------------------+
  1256.  
  1257. Any opinions expressed, or implied, are my own!  They should not be
  1258. considered representative of the opinions or policies of my employer,
  1259. MacPlay, a division of Interplay Productions, Inc.
  1260.  
  1261. +++++++++++++++++++++++++++
  1262.  
  1263. >From somogyi@ziff.com (Stephan Somogyi)
  1264. Date: Mon, 30 May 1994 20:37:18 GMT
  1265. Organization: Digital Media
  1266.  
  1267. In article <2s3c5j$a03@ncrpda.curtin.edu.au>, peter@ncrpda.curtin.edu.au
  1268. (Peter N Lewis) wrote:
  1269.  
  1270. > Garry says that SOM can't be used for Open Transport.  I don't know why,
  1271. > but I do know that one of thse has to happen:
  1272.  
  1273. If memory serves, the reasons are that SOM isn't interrupt-safe and the
  1274. overhead incurred by SOM makes it unsuitable for time-critical code such
  1275. as a protocol stack.
  1276.  
  1277. ____________________________________________________________________________
  1278. Stephan Somogyi             Vorsprung durch Technik            Digital Media
  1279.  
  1280. +++++++++++++++++++++++++++
  1281.  
  1282. >From somogyi@ziff.com (Stephan Somogyi)
  1283. Date: Mon, 30 May 1994 20:45:16 GMT
  1284. Organization: Digital Media
  1285.  
  1286. In article <9405240937.AA02456@mikel.intercon.com>, mikel@intercon.com
  1287. (Michael W. Wellman) wrote:
  1288.  
  1289. > All of the issues make sense; but it's inconvenient having to give up 
  1290. > Metrowerks because of this (clearly, if Open Transport needs ASLM, I'm
  1291. > not  giving up ASLM).
  1292.  
  1293. After talking to several people at WWDC about this, I'm not convinced that
  1294. things are quite this bleak.
  1295.  
  1296. OpenTransport will have a C-based procedural interface that one could
  1297. (theoretically -- I haven't looked into this yet myself) write one's own
  1298. C++ wrappers around. However, I don't know whether there are any penalties
  1299. for using the C-based interfaces rather than the C++ interfaces.
  1300.  
  1301. To the best of my knowledge, the issues surrounding support of ASLM (and
  1302. the resultant requirements for compatible name mangling and vtable
  1303. formats) are only relevant if one wants to use OpenTransport's C++
  1304. interfaces.
  1305.  
  1306. ____________________________________________________________________________
  1307. Stephan Somogyi             Vorsprung durch Technik            Digital Media
  1308.  
  1309. +++++++++++++++++++++++++++
  1310.  
  1311. >From amanda@intercon.com (Amanda Walker)
  1312. Date: Thu,  2 Jun 1994 15:48:32 -0500
  1313. Organization: InterCon Systems Corporation, Herndon, VA  USA
  1314.  
  1315. somogyi@ziff.com (Stephan Somogyi) writes:
  1316. > OpenTransport will have a C-based procedural interface that one 
  1317. > could (theoretically -- I haven't looked into this yet myself) write 
  1318. > one's own C++ wrappers around. However, I don't know whether there are 
  1319. > any penalties for using the C-based interfaces rather than the 
  1320. > C++ interfaces. 
  1321.  
  1322. The C++ class is, in fact, simply a wrapper around the C interface, as far as 
  1323. I can tell.
  1324.  
  1325. > To the best of my knowledge, the issues surrounding support of ASLM 
  1326. > (and the resultant requirements for compatible name mangling and 
  1327. > vtable formats) are only relevant if one wants to use OpenTransport's 
  1328. > C++ interfaces. 
  1329.  
  1330. You still need at least minimal ASLM support in order to use the C API, since 
  1331. it's an ASLM function set, not a statically linked library.  Also, the 
  1332. LibraryManager.o library needs to have its vtables set up and constructors 
  1333. called, which necessitates at least a simulacrum of the MPW C++ initialization
  1334. code.
  1335.  
  1336. The basic problem is that the ASLM is a hack (albeit a very clever hack).  It 
  1337. will thus require a hack to access it from Code Warrior.  The only question is 
  1338. how twisted such a hack will turn out to be.  Also note that this is only a 
  1339. big problem on the 68K side.  The PPC ASLM is built on top of CFM, which 
  1340. should help a lot.  Unfortunately, Open Transport seeds have been 68K-only 
  1341. builds so far.
  1342.  
  1343. None of this is intractable by any means.  It's just annoying :).
  1344.  
  1345.  
  1346. Amanda Walker
  1347. InterCon Systems Corporation
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353. +++++++++++++++++++++++++++
  1354.  
  1355. >From seaquest@netcom.com (Pete Mackie)
  1356. Date: Sat, 4 Jun 1994 15:52:56 GMT
  1357. Organization: Seaquest Software
  1358.  
  1359. In Article <somogyi-3005941337180001@lre2.macuser.ziff.com>,
  1360. somogyi@ziff.com (Stephan Somogyi) wrote:
  1361. >In article <2s3c5j$a03@ncrpda.curtin.edu.au>, peter@ncrpda.curtin.edu.au
  1362. >(Peter N Lewis) wrote:
  1363. >
  1364. >> Garry says that SOM can't be used for Open Transport.  I don't know why,
  1365. >> but I do know that one of thse has to happen:
  1366. >
  1367. >If memory serves, the reasons are that SOM isn't interrupt-safe and the
  1368. >overhead incurred by SOM makes it unsuitable for time-critical code such
  1369. >as a protocol stack.
  1370. >
  1371.  
  1372. I also heard that SOM isn't interrupt-safe at WWDC therefore cannot be used
  1373. for Open Transport.  However, Apple states that my not always be true.  See
  1374. Apple's DDL Statement of Direction following.  This may help you, or confuse
  1375. you even more.   ;-)
  1376.  
  1377. ==========================================
  1378. Macintosh Dynamic Linked Libraries (DLLs)
  1379. ==========================================
  1380. ETO #14 (March '1994) Update
  1381.  
  1382. Apple has developed a complete technology solution for shared code, shared
  1383. objects, and dynamic linked libraries (DLLs) on the Macintosh. Parts of this
  1384. solution are available today, with additional parts becoming available in
  1385. the coming months.
  1386.  
  1387. There are three key components to Macintosh DLL strategy:
  1388.     o Apple's Shared Library Manager (ASLM),
  1389.     o Apple's Code Fragment Manager (CFM), and
  1390.     o IBM's System Object Model (SOM).
  1391.  
  1392. Here is a brief summary of ASLM, CFM, and SOM ...
  1393.  
  1394. ASLM
  1395. - ----------
  1396. Apple Shared Library Manager is the first component of Apple's DLL solution
  1397. to be available, and is an integral part of our overall DLL offering.  ASLM
  1398. supports shared code libraries for both procedural and object oriented
  1399. development efforts. A number of Apple products have already been based on
  1400. ASLM, including MacSNMP and the GeoPort communications pod technology. Third
  1401. parties such as Microsoft (OLE for Macintosh), Novell (AppWare), and Aldus
  1402. have also adopted ASLM to support their DLL needs.
  1403.  
  1404. In the future, additonal functionality will be added to the Macintosh
  1405. operating system as ASLM libraries, including our next generation
  1406. networking, the Open Transport Communications Architecture.
  1407.  
  1408. ASLM v1.1.1 is the currently shipping release. ASLM v2.0 is under
  1409. development, to provide support for native code shared libraries on Power
  1410. Macintosh (An alpha release is available on this ETO). ASLM 2.x sits on top
  1411. of (is based on) the Code Fragment Manager. This work is expected to produce
  1412. final product in 2Q CY94.
  1413.  
  1414. As CFM becomes available on 68K Macintosh (see below), ASLM version 2.1 will
  1415. support CFM on 68K as well, while continuing to support current 68K-style
  1416. shared libraries. Thus, 
  1417. ASLM v2.x will provide compatibility for ASLM v1.1 and v1.1.1 applications.
  1418.  
  1419. ASLM adds higher-level object-oriented capabilities to the environment that
  1420. are not a part of the Code Fragment Manager itself. ASLM is the technology
  1421. of choice when you:
  1422.  
  1423.     o need DLLs on 68K today ... ASLM is shipping
  1424.     o want simplicity and elegance with C++
  1425.     o want a simple but powerful extension mechanism using C, Pascal, or ASM
  1426.     o have performance sensitive (i.e., interrupt time) needs like networking
  1427.     o want run-time transparent dynamic loading and unloading of code
  1428.     o DON'T need transparent access to per-context global data
  1429.     o DON'T need to solve the "fragile base class" problem for C++
  1430.  
  1431. CFM
  1432. - ----------
  1433. As a second key step in our DLL strategy, Apple has developed a new
  1434. foundation layer for dynamic linking on the Macintosh known as the Code
  1435. Fragment Manager (CFM). CFM will be a core part of System Software on the
  1436. PowerPC Macintosh.
  1437.  
  1438. CFM is also being developed for the Macintosh on 68K. This work is expected
  1439. to produce final product in 3Q CY94.
  1440.  
  1441. The Code Fragment Manager provides code sharing and dynamic linking, with
  1442. features supporting per-context globals. CFM will be fully supported by
  1443. development tools on Macintosh.
  1444.  
  1445. CFM is the best bet when your application:
  1446.     o runs on PowerPC Macintosh first, and 68K Macintosh later
  1447.     o needs only basic dynamic loading and unloading of shared code
  1448.     o needs to reduce system overhead to the minimum amount
  1449.     o needs transparent access to per-context global data
  1450.     o DOES NOT need system-level OOP support
  1451.  
  1452.  
  1453. SOM
  1454. - ----------
  1455. Apple is in the process of licensing and porting IBM's System's Object Model
  1456. (SOM) technology to Macintosh. SOM is a multi-platform standard providing
  1457. for system-level sharable objects in a language-neutral way. SOM also solves
  1458. the "fragile base class" problem, avoiding the need for client libraries to
  1459. be recompiled when the base class they inherit from is in a different
  1460. library and is changed.
  1461.  
  1462. To offer these benefits (multi-platform support and fragile base-class
  1463. resolution) SOM requires the use of an IDL as a first step in the
  1464. development process.
  1465.  
  1466. SOM runs on top of CFM, and thus will become available on both 68K and
  1467. PowerPC Macintosh.
  1468.  
  1469. SOM is a foundation technology for OpenDoc. 
  1470.  
  1471.  
  1472. Integration
  1473. - ----------
  1474. SOM and ASLM will both live in a CFM run-time environment, and will both be
  1475. available on both 68K and PowerPC Macintosh. Thus there will be no
  1476. impediment to co-existence of ASLM and SOM, or to applications that use both
  1477. ASLM and SOM. In fact, a SOM class could easily call an ASLM class or
  1478. vice-versa.
  1479.  
  1480. Over time, some of the functionality provided by ASLM may be supplanted by
  1481. SOM. However, ASLM APIs will be preserved. As a result, applications written
  1482. to the ASLM API may have some functionality transparently migrated to SOM in
  1483. the future. 
  1484.  
  1485.  
  1486.  
  1487.  
  1488. ___________________________________________________________________
  1489. Pete Mackie                  |       Internet: seaquest@netcom.com   
  1490. Seaquest Software            |      AppleLink: D0937 
  1491. Portland, Oregon  USA        | America Online: Seaquest1
  1492. Voice: (503) 531-0252        |         eWorld: Seaquest
  1493. Fax:   (503) 629-8442        |               
  1494. _____________________________|_____________________________________
  1495.  
  1496. ---------------------------
  1497.  
  1498. >From rkwee@ee.pdx.edu (Roland Kwee)
  1499. Subject: [Q] Finding out if volume is locked
  1500. Date: 2 Jun 1994 19:13:15 -0700
  1501. Organization: (none)
  1502.  
  1503.  
  1504. How do I quickly check if the volume is locked? New Inside Mac, Files,
  1505. p2-8 says I should check that before opening a file for write access,
  1506. because the file open call would return OK even on locked volumes.
  1507. They recommend calling PBHGetVInvo() (what a user-friendly system...)
  1508. which is described on p. 2-144, but I can't find the description
  1509. of the volume attributes ioVAtrb.
  1510.  
  1511. Does anybody know?
  1512.  
  1513. Thanks, Roland Kwee
  1514. (please send email directly to: RolandKwee@ACM.org)
  1515.  
  1516. +++++++++++++++++++++++++++
  1517.  
  1518. >From mclow@coyote.csusm.edu (Marshall Clow)
  1519. Date: 2 Jun 1994 19:26:29 -0700
  1520. Organization: California State University San Marcos
  1521.  
  1522. Roland Kwee (rkwee@ee.pdx.edu) wrote:
  1523.  
  1524. >How do I quickly check if the volume is locked? New Inside Mac, Files,
  1525. >p2-8 says I should check that before opening a file for write access,
  1526. >because the file open call would return OK even on locked volumes.
  1527. >They recommend calling PBHGetVInvo() (what a user-friendly system...)
  1528. >which is described on p. 2-144, but I can't find the description
  1529. >of the volume attributes ioVAtrb.
  1530.  
  1531. >Does anybody know?
  1532.  
  1533. Here's my routine:
  1534.  
  1535. Boolean    VIsLocked ( short vRefNum ) {
  1536. #define    softLockBit        0x8000
  1537. #define hardLockBit        0x0080
  1538.     
  1539.     OSErr            err = noErr;
  1540.     HParamBlockRec    pb;
  1541.     Str255             vName;
  1542.     
  1543.     if ( vRefNum == kOnSystemDisk )
  1544.         vRefNum = FindSystemVolume ();
  1545.  
  1546.     vName [ 0 ] = '\0';
  1547.     pb.volumeParam.ioCompletion    = nil;
  1548.     pb.volumeParam.ioNamePtr    = vName;
  1549.     pb.volumeParam.ioVRefNum    = vRefNum;
  1550.     pb.volumeParam.ioVolIndex    = 0;
  1551.     err = PBHGetVInfoSync ( &pb );
  1552.     AssertStr ( err == noErr, "\pPBHGetVInfoSync in VIsLocked" );
  1553.     
  1554.     return ( pb.volumeParam.ioVAtrb & ( softLockBit | hardLockBit )) != 0;
  1555.     }
  1556.  
  1557. Marshall Clow
  1558. Aladdin Systems
  1559. mclow@san_marcos.csusm.edu
  1560.  
  1561.  
  1562. +++++++++++++++++++++++++++
  1563.  
  1564. >From jumplong@aol.com (Jump Long)
  1565. Date: 4 Jun 1994 23:28:02 -0400
  1566. Organization: America Online, Inc. (1-800-827-6364)
  1567.  
  1568. In article <2sm3jr$cjn@cruella.ee.pdx.edu>, rkwee@ee.pdx.edu (Roland
  1569. Kwee) writes:
  1570.  
  1571. >How do I quickly check if the volume is locked? New Inside Mac,
  1572. Files,
  1573. >p2-8 says I should check that before opening a file for write
  1574. access,
  1575. >because the file open call would return OK even on locked volumes.
  1576. >They recommend calling PBHGetVInvo() (what a user-friendly
  1577. system...)
  1578. >which is described on p. 2-144, but I can't find the description
  1579. >of the volume attributes ioVAtrb.
  1580.  
  1581. >Does anybody know?
  1582.  
  1583. Funny you should ask. I added CheckVolLock to MoreFiles (the DTS File
  1584. Manager sample) this afternoon.  Here's the prototype, documentation,
  1585. and function. The only code not included here is the pcpy function
  1586. which I'm sure you can come up with (or grab it from MoreFiles).
  1587.  
  1588. /********************************************************************
  1589. *********/
  1590.  
  1591. pascal OSErr CheckVolLock(StringPtr pathname,
  1592.         short vRefNum);
  1593. /* Use CheckVolLock to determine if a volume is locked - either by
  1594.  hardware or by software. If CheckVolLock returns noErr, then the
  1595. volume
  1596.  is not locked.
  1597.  
  1598.  pathName input: Pointer to a full pathname or nil.  If you pass in a
  1599.  
  1600.       partial pathname, it is ignored. A full pathname to a
  1601.       volume must end with a colon character (:).
  1602.  vRefNum  input: Volume specification (volume reference number,
  1603. working
  1604.       directory number, drive number, or 0).
  1605. */
  1606.  
  1607. /********************************************************************
  1608. *********/
  1609.  
  1610. pascal OSErr CheckVolLock(StringPtr pathname,
  1611.         short vRefNum)
  1612. {
  1613.  HParamBlockRec pb;
  1614.  Str255 tempPathname;
  1615.  OSErr error;
  1616.  
  1617.  pb.volumeParam.ioVRefNum = vRefNum;
  1618.  if (pathname == nil) {
  1619.   pb.volumeParam.ioNamePtr = nil;
  1620.   pb.volumeParam.ioVolIndex = 0;  /* use ioVRefNum only */
  1621.  }
  1622.  else {
  1623.   pcpy((StringPtr)tempPathname, pathname); /* make a copy of the
  1624. string and */
  1625.   pb.volumeParam.ioNamePtr = (StringPtr)tempPathname; /* use the copy
  1626. so original isn't trashed */
  1627.   pb.volumeParam.ioVolIndex = -1; /* use ioNamePtr/ioVRefNum
  1628. combination */
  1629.  }
  1630.  error = PBHGetVInfoSync(&pb);
  1631.  
  1632.  if ( error == noErr )
  1633.  {
  1634.   if ( (pb.volumeParam.ioVAtrb & 0x0080) != 0 )
  1635.    error = wPrErr;  /* volume locked by hardware */
  1636.   else if ( (pb.volumeParam.ioVAtrb & 0x8000) != 0 )
  1637.    error = vLckdErr; /* volume locked by software */
  1638.  }
  1639.  
  1640.  return (error);
  1641. }
  1642.  
  1643. /********************************************************************
  1644. *********/
  1645.  
  1646. - Jim Luther
  1647.  
  1648.  
  1649. ---------------------------
  1650.  
  1651. End of C.S.M.P. Digest
  1652. **********************
  1653.  
  1654.  
  1655.  
  1656.